home *** CD-ROM | disk | FTP | other *** search
/ Almathera Ten Pack 3: CDPD 3 / Almathera Ten on Ten - Disc 3: CDPD3.iso / scope / 001-025 / scopedisk14 / tcell / nvk.mod < prev    next >
Text File  |  1995-03-18  |  3KB  |  86 lines

  1. (*===========================================================================*)
  2. (*                          Which disk changed                               *)
  3. (*===========================================================================*)
  4. (*                                                                           *)
  5. (*              Original : Writen by David Siebert                           *)
  6. (*                         08-feb-88                                         *)
  7. (*===========================================================================*)
  8. (*                                                                           *)
  9. (*             Modified  : 02-may-88 David Siebert                           *)
  10. (*                         converted from vk to nvk                          *)
  11. (*                                                                           *)
  12. (*===========================================================================*)
  13. IMPLEMENTATION MODULE NVK;
  14. FROM SYSTEM IMPORT TSIZE,ADDRESS;
  15. FROM IO IMPORT DoIO,IOStdReq,IORequest,IORequestPtr;
  16. FROM TrackDiskDevice IMPORT IOExtTD,TrackDiskName,TDChangeNum;
  17. FROM PortUtils IMPORT CreatePort,CreateExtIO,DeletePort,DeleteExtIO;
  18. FROM Ports IMPORT MsgPortPtr;
  19. FROM Devices IMPORT OpenDevice,CloseDevice;
  20.  
  21. (* $S-,$T-,$A+ *)
  22. TYPE
  23.    LookString = ARRAY[1..4] OF CHAR;
  24.    
  25. CONST
  26.  
  27.   ON       = 1;
  28.  OFF       = 0;
  29.  NumOfCyl  = 80;
  30.  NumOfHead = 2;
  31.  
  32. VAR
  33.   
  34.   x : LONGCARD;
  35.   i : INTEGER;
  36.  
  37. PROCEDURE Change():LONGCARD;
  38.  
  39. VAR 
  40.   
  41.   DumbGymnastics : IORequestPtr;
  42.   reqsize   : IOExtTD;
  43.   diskreq   : POINTER TO IOExtTD;
  44.   ChdDrv,
  45.   Drive,
  46.   DiskCount,
  47.   Error    : LONGCARD;
  48.   DiskPort : MsgPortPtr;
  49.   i        : INTEGER;
  50.  
  51. BEGIN
  52.   ChdDrv:=0;
  53.   DiskPort := CreatePort("",0);
  54.   DumbGymnastics := CreateExtIO(DiskPort,TSIZE(IOExtTD));
  55.   FOR Drive:=0 TO 3 DO
  56.     IF Di[INTEGER(Drive)].IsHere THEN
  57.        Error := OpenDevice(TrackDiskName,Drive,DumbGymnastics,0);
  58.        IF Error=0 THEN
  59.          diskreq:=ADDRESS(DumbGymnastics);
  60.          diskreq^.iotdReq.ioReq.ioCommand:=TDChangeNum;
  61.          Error:=DoIO(DumbGymnastics^);
  62.          DiskCount:=diskreq^.iotdReq.ioActual;
  63.          Di[INTEGER(Drive)].IsHere:=TRUE;
  64.          IF (DiskCount > Di[INTEGER(Drive)].LastChange) THEN
  65.             Di[INTEGER(Drive)].LastChange:=DiskCount;
  66.             ChdDrv:=Drive;
  67.          END ; (* end if *)
  68.          CloseDevice (DumbGymnastics);
  69.        ELSE 
  70.          Di[INTEGER(Drive)].IsHere:=FALSE;
  71.          Di[INTEGER(Drive)].LastChange:=0;
  72.        END;
  73.     END; (* end if *)
  74.   END; (*end For *)
  75.   DeleteExtIO (DumbGymnastics,TSIZE(IOExtTD));
  76.   DeletePort(DiskPort);
  77.   RETURN ChdDrv;
  78.   END Change;
  79. BEGIN
  80. FOR i:=0 TO 3 DO
  81.   Di[i].IsHere:=TRUE;
  82.   Di[i].LastChange:=0;
  83. END ; (* end for loop *)
  84. x:=Change();
  85. END NVK.
  86.